package beans;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import beans.exceptions.NotConnectedException;

import dao.EntityAlreadyExistsException;
import dao.InexistantEntityException;
import entities.Commande;

@ManagedBean
@RequestScoped
public class CommandeBean extends SuperBean {
    
    @ManagedProperty(value = "#{mainBean}")
    private MainBean mainBean;
       
    private Integer quantity;
    
    private Integer idProduit;

    
    public Integer getQuantity() {
        return quantity;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    public Integer getIdProduit() {
        return idProduit;
    }

    public void setIdProduit(Integer idProduit) {
        this.idProduit = idProduit;
    }
    
    public void setMainBean(MainBean mainBean) {
        this.mainBean = mainBean;
    }
    
    
    public List<Commande> getCommandes()
    {
        String page = FacesContext.getCurrentInstance().getViewRoot().getViewId();
        
        if(page.equals("/pages/listeCommandesClient.xhtml"))
        {
            try
            {                
                return (List<Commande>) mainBean.getGestionnaire().getCommandesDuClient(sessionBean.getSessionClientId());
            }
            catch(InexistantEntityException e)
            {
                mainBean.setMessage(e.toString());
            }
            catch(NotConnectedException e)
            {
                mainBean.setMessage(e.toString());
                //s'affiche car le output message est situé après "page"
            }
        }
        else
            return (List<Commande>) mainBean.getGestionnaire().getAll(Commande.class);
                
        return null;
    }
    
    public void nouvelleCommande()
    {
        try
        {
            mainBean.getGestionnaire().creerCommande(idProduit, sessionBean.getSessionClientId(), quantity);
            mainBean.setMessage("La commande a été correctement créée.");
            idProduit = null;
            quantity = null;
            
        } catch (InexistantEntityException ex) {
            mainBean.setMessage(ex.toString());
        } catch (EntityAlreadyExistsException ex) {
            mainBean.setMessage(ex.toString());
        } catch (NotConnectedException ex) {
            mainBean.setMessage(ex.toString());
        }
        
        //on reste sur la même page donc pas besoin de return String pour faces-config.xml
    }

}
